目前為止,我們設定OnClick動作都是直接放在XML檔案(Layout布局)中,作為特定View的屬性,例如:
<TextView
android:id="@+id/numbers"
style="@style/CategoryStyle"
android:background="@color/category_numbers"
android:text="@string/category_numbers"
android:onClick="openNumberList()"/>
有點像是HTML中的:
<button onclick="myFunction()">Click me</button>
現在我們要更進一步,將Event Listener寫在java中(有點像是呼叫的方法本來寫在HTML中,現在寫在JavaScript裡)。
事件(Event)有很多種,像是click event, long click event, drag event, keyboardkey event等)。在前端使用者的行為會被硬體偵測到,使用者點擊的位置是屬於哪個View時,Android會呼叫該事件所對應的方法。
EventLinster是interface(介面),都有一個callback method。
callback:在事件發生時,回呼該方法
例如View.OnClickListener這個事件監聽器,只有一個abstract method:void onClick (View v)
。
舉例來說:
public class TextView {
String mText;
int mTextColor
void setText (String text) {
mText = text;
}
void setTextColor (int color) {
mTextColor = color;
}
...
}
public abstract vlass ViewGroup
int mChildrenCount;
void addView (view child)
addView (child, -1);
void onLayout();
...
public interface OnClickLinstener
void onClick (View view);
因此當我們: